package vd

// 自定义 bind 和 validate 的 Error
type ValidateError struct {
	ErrType, FailField, Msg string
}

// Error implements error interface.
func (e *ValidateError) Error() string {
	if e.Msg != "" {
		return e.Msg
		//return e.ErrType + ": expr_path=" + e.FailField + ", cause=" + e.Msg
	}
	return e.ErrType + ": 参数名=" + e.FailField + ", 原因=invalid"
}

func initCustomVdErr() {
	ValidateConfig.SetValidatorErrorFactory(func(failField, msg string) error {
		err := ValidateError{
			ErrType:   "参数错误",
			FailField: failField,
			Msg:       msg,
		}

		return &err
	})
}

// custom define bind and vd error
//type BindError struct {
//	ErrType, FailField, Msg string
//}
//
//// Error implements error interface.
//func (e *BindError) Error() string {
//	if e.Msg != "" {
//		return e.Msg
//	}
//	return e.ErrType + ": expr_path=" + e.FailField + ", cause=invalid"
//}
//
//type ValidateError struct {
//	ErrType, FailField, Msg string
//}
//
//// Error implements error interface.
//func (e *ValidateError) Error() string {
//	if e.Msg != "" {
//		return e.Msg
//	}
//	return e.ErrType + ": expr_path=" + e.FailField + ", cause=invalid"
//}
//
//func initCustomBindVdErr() {
//	CustomBindErrFunc := func(failField, msg string) error {
//		err := BindError{
//			ErrType:   "bindErr",
//			FailField: "[bindFailField]: " + failField,
//			Msg:       msg,
//		}
//
//		return &err
//	}
//
//	CustomValidateErrFunc := func(failField, msg string) error {
//		err := ValidateError{
//			ErrType:   "validateErr",
//			FailField: "[validateFailField]: " + failField,
//			Msg:       msg,
//		}
//
//		return &err
//	}
//
//	binding.SetErrorFactory(CustomBindErrFunc, CustomValidateErrFunc)
//}
